package com.mjf.scala.chapter06

/**
 * 构造方法的参数
 */
object Scala09_TestConstructor {

  def main(args: Array[String]): Unit = {
//    val std1: Student09 = new Student09()
//    val std2: Student09 = new Student09("jack", 18)
    val std3: Student09 = new Student09("jack", 18)
    println(std3.name, std3.age)
  }

}

// 只提供无参的主构造，单独定义
/*
class Student09 {
  var name: String = _
  var age: Int = _
}*/

// 在Scala语言中，以下写法比较少用。Java写法
/*
class Student09(nameParam: String, ageParam: Int) {
  var name: String = nameParam
  var age: Int = ageParam
}*/

/*
Scala类的主构造器函数的形参包括三种类型：未用任何修饰、var修饰、val修饰
（1）未用任何修饰符修饰，这个参数就是一个局部变量
（2）var修饰参数，作为类的成员属性使用，可以修改
（3）val修饰参数，作为类只读属性使用，不能修改
 */
/*class Student09(var name: String, var age: Int) {
  def m1(): Unit ={
    println(name)
    println(age)
  }
}*/

// 同时提供主、辅助构造方法
class Student09 {
  var name: String = _
  var age: Int = _

  def this(name:String, age:Int) {
    this()
    this.name = name
    this.age = age
  }
}